/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package kiwi.stanbol.model.fise;

import java.util.Collection;
import java.util.Date;

import kiwi.core.model.annotations.RDF;
import kiwi.core.model.annotations.RDFFilter;
import kiwi.core.model.annotations.RDFType;
import kiwi.core.model.content.MediaContentItem;
import kiwi.core.model.entity.KiWiFacade;
import kiwi.core.model.rdf.KiWiResource;
import kiwi.core.model.rdf.KiWiUriResource;

/**
 * @author Rupert Westenthaler
 *
 */
@RDFType("http://fise.iks-project.eu/ontology/Enhancement")
@RDFFilter("http://fise.iks-project.eu/ontology/Enhancement")
public interface Enhancement extends KiWiFacade {

    @RDF("http://purl.org/dc/terms/creator")
    KiWiResource getCreator();
    void setCreator(KiWiResource creator);

    @RDF("http://purl.org/dc/terms/created")
    Date getCreated();
    void setCreated(Date date);

    @RDF("http://purl.org/dc/terms/type")
    Collection<KiWiUriResource> getDcType();
    void setDcType(Collection<KiWiUriResource> types);

    @RDF("http://fise.iks-project.eu/ontology/confidence")
    Double getConfidence();
    void setConfidence(Double value);

    @RDF("http://fise.iks-project.eu/ontology/extracted-from")
    MediaContentItem getExtractedFrom();
    void setExtractedFrom(MediaContentItem contentItem);

    @RDF("http://purl.org/dc/terms/requires")
    Collection<Enhancement> getRequires();
    void setRequires(Collection<Enhancement> required);

    @RDF("http://purl.org/dc/terms/relation")
    Collection<Enhancement> getRelations();
    void setRelation(Collection<Enhancement> related);
	
}